#ifndef _NB_AT_H_
#define _NB_AT_H_

#define AT_OK_RET				"OK\r\n"
#define AT_ERR_RET			"ERROR\r\n"
#define NSONMI_RET			"+NSONMI:"
#define NNMI_RET				"+NNMI:"
#define CSQ_RET         "+CSQ:"
#define CEREG_RET       "+CEREG:"

#define AT_NRB					"AT+NRB\r\n"      // 重启设备
#define AT							"AT\r\n"          // AT命令测试，以此判断模块串口是否启动
#define AT_QLEDMODE     "AT+QLEDMODE=1\r\n" // 使能模块状态灯
#define AT_CGMM					"AT+CGMM\r\n"     // 获取模块名称
#define AT_ATI          "ATI\r\n"         //查看软件版本号
/*
ATI

Quectel
BC28
Revision:BC28JAR01A07

OK

*/
#define AT_CGMR					"AT+CGMR\r\n"			// 获取固件版本信息
#define AT_R_NBAND			"AT+NBAND?\r\n"   // 获取模块所支持的频带
//频段 	中心频率 	上行频率 	下行频率 	运营商
//B5 	850MHz 	824MHz~849MHz 	869MHz~894MHz 	中国电信
//B8 	900MHz 	880MHz~915MHz 	925MHz~960MHz 	中国移动、中国联通
#define AT_W_NBAND   		"AT+NBAND=5,8\r\n"   // 设置频段5 中国电信
#define AT_W_NBAND_5		"AT+NBAND=5\r\n"   // 设置频段5 中国电信
#define AT_W_NBAND_8		"AT+NBAND=8\r\n"   // 设置频段8 中国移动、中国联通
#define AT_NCSEARFCN		"AT+NCSEARFCN\r\n" // 清除先验频点
#define AT_W_NCONFIG_MANUL    "AT+NCONFIG=AUTOCONNECT,FALSE\r\n" // 设置手动入网
#define AT_R_NCONFIG		"AT+NCONFIG?\r\n" // 获取用户配置信息
#define AT_W_CFUN_0     "AT+CFUN=0\r\n"   //关机，设置 IMEI 和平台 IP 端口前要先关机
#define AT_W_NCDP_CHINA_TELE  "AT+NCDP=180.101.147.115,5683\r\n" //设置对接的平台 IP 端口，5683 为非加密端口，5684为加密端口
#define AT_W_CFUN_1     "AT+CFUN=1\r\n"   //开机
#define AT_W_CFUN_0     "AT+CFUN=0\r\n"   //关机
#define AT_W_CGDCONT_CTNB     "AT+CGDCONT=1,\"IP\",\"CTNB\"\r\n"
#define AT_STOP_eDRX    "AT+CEDRXS=0,5\r\n"   //关闭模组eDRX功能
#define AT_STOP_PSM     "AT+CPSMS=0\r\n"      //闭模组PSM功能
#define AT_CIMI					"AT+CIMI\r\n"     // 获取IMSI,可以用于判断是否有SIM卡
#define AT_W_CGSN				"AT+CGSN=1\r\n"   // 获取IMEI
#define AT_W_CGDCONT		"AT+CGDCONT=1,\"IP\",\"HUAWEI.COM\"\r\n" // 设置PDP，可自行修改
#define AT_CGPADDR      "AT+CGPADDR\r\n"  // 获取PDP地址
#define AT_W_CGATT			"AT+CGATT=1\r\n"  // 激活网络连接
#define AT_CSQ					"AT+CSQ\r\n"      // 获取信号强度
#define AT_R_CGATT			"AT+CGATT?\r\n"   // 获取网络连接状态
#define AT_W_CEREG2			"AT+CEREG=2\r\n"   // 获取网络注册状态
#define AT_R_CEREG			"AT+CEREG?\r\n"   // 获取网络注册状态
#define AT_R_CSCON			"AT+CSCON?\r\n"   // 获取信令连接状态
#define AT_R_NUESTATS   "AT+NUESTATS\r\n"
#define AT_					"\r\n"

typedef enum{
	CMD_AT = 0,
	CMD_AT_NRB,  			/* 重启设备 */
	CMD_AT_CGMM, 			/* 获取模块名称 */
	CMD_AT_CGMR, 			/* 获取固件版本信息 */
	CMD_AT_CIMI, 			/* 获取IMSI,可以用于判断是否有SIM卡 */
	CMD_AT_CFUN_0, 		/* 进入飞行模式，相当于关机 */
	CMD_AT_CFUN_1, 		/* 退出飞行模式，相当于开机 */
	CMD_AT_CGATT_1, 	/* 激活网络连接 */
	CMD_AT_CGDCONT,   /* 设置APN */
	CMD_AT_NCDP,      /* 设置COAP 服务器地址 */
	
	CMD_AT_CSQ,    		/* 获取信号强度 */
	CMD_AT_CEREG_2, 	/* 返回网络注册和位置信息 */
	CMD_AT_CEREG,     /* 获取网络注册状态 */
	CMD_AT_CGPADDR,   /* 获取PDP地址 */
	
	CMD_AT_NSOCR,     /* 创建UDP Socket id */ 
	CMD_AT_NSOST,     /* 发送UDP数据 */	
	CMD_AT_NSONMI,    /* 模块已经接收到UDP数据的提示命令，模块主动返回 */
	CMD_AT_NSORF,     /* 读取UDP缓存数据 */
	
	CMD_AT_NMGS,      /* 通过COAP协议发送数据报文 */
	CMD_AT_NNMI,      /* 模块已经接收到COAP数据的提示命令，模块主动返回 */
	
}CMD_AT_CASE;

typedef enum{
	CMD_AT_OK = 0,
	CMD_AT_ERR = 1,
	CMD_AT_TIMEOUT = 2,
}CMD_AT_RV;

#endif

